package com.gftBrazil.BankSystem.business;

import com.gftBrazil.BankSystem.bean.AgenciaBean;
import java.util.List;

/**
 *
 * @author JRSS
 */
public class AgenciaBusiness {

    private static final AgenciaBusiness instance = new AgenciaBusiness();
    private static AgenciaBean agencia = new AgenciaBean();
    private static List<AgenciaBean> agencias;
    private int lastID = 1;

    public static final AgenciaBusiness getInstance() {
        return instance;
    }

    public boolean cadastrarAgencia(AgenciaBean agencia) {
        boolean sucess = true;
        if (validarAgencia()) {
            AgenciaBusiness.setAgencia(agencia);
            armazenarAgencia(agencia);
        } else {
            sucess = false;
        }
        return sucess;
    }

    private void armazenarAgencia(AgenciaBean agencia) {
        lastID = 1;
        if (!agencias.isEmpty()) {
            boolean first = true;
            for (AgenciaBean a : getAgencias()) {
                if (first) {
                    first = false;
                    lastID = a.getCodigoAgencia();
                } else {
                    if (lastID < a.getCodigoAgencia()) {
                        lastID = a.getCodigoAgencia();
                    }
                }
            }
            lastID++;
        }
        agencia.setCodigoAgencia(lastID);
        getAgencias().add(agencia);
    }

    public AgenciaBean consultarAgencia(int codigoAgencia) {
        setAgencia(new AgenciaBean());
        if (getAgencias() != null) {
            for (AgenciaBean a : getAgencias()) {
                if (a.getCodigoAgencia() == codigoAgencia) {
                    setAgencia(a);
                    break;
                }
            }
        }
        return getAgencia();
    }

    public boolean desativarAgencia(int codigoAgencia) {
        setAgencia(new AgenciaBean());
        boolean sucess = true;
        setAgencia(consultarAgencia(codigoAgencia));
        if (getAgencia() == null) {
            sucess = false;
        } else {
            getAgencia().setAtiva(false);
        }
        return sucess;
    }

    public boolean reativarAgencia(int codigoAgencia) {
        setAgencia(new AgenciaBean());
        boolean sucess = true;
        setAgencia(consultarAgencia(codigoAgencia));
        if (getAgencia() == null) {
            sucess = false;
        } else {
            getAgencia().setAtiva(true);
        }
        return sucess;
    }

    private boolean validarAgencia() {
        boolean sucess;
        sucess = getAgencia().getNome() != null
                && getAgencia().getCnpj() != null
                && getAgencia().getEndereco() != null;
        return sucess;
    }

    /**
     * @return the agencias
     */
    public List<AgenciaBean> getAgencias() {
        return agencias;
    }

    /**
     * @param agencias the agencias to set
     */
    public void setAgencias(List<AgenciaBean> agencias) {
        this.agencias = agencias;
    }

    /**
     * @return the agencia
     */
    public static AgenciaBean getAgencia() {
        return agencia;
    }

    /**
     * @param aAgencia the agencia to set
     */
    public static void setAgencia(AgenciaBean aAgencia) {
        agencia = aAgencia;
    }
}
